<?php
class FormatCheckLib{
	/**
	 * 校验是否由字母和数字组成
	 * @param unknown_type $value
	 */
	public static function isCharacterAndNumber($value)
	{
		if (preg_match("/^[a-zA-Z0-9]+$/", $value))
		{
			return TRUE;
		}
		return FALSE;
	}
	/**
	 * 校验是否由字母组成
	 * @param unknown_type $value
	 */
	public static function isCharacter($value){
		if (preg_match("/^[a-zA-Z]+$/", $value))
		{
			return TRUE;
		}
		return FALSE;
	}
	/**
	 * 校验是否由数字组成
	 */
	public static function isNumber($value){
		if (preg_match("/^[0-9]+$/", $value))
		{
			return TRUE;
		}
		return FALSE;
	}
	/**
	 * 校验是否是由字母开头的由字母或则字母和数字组成的字符串
	 */
	public static function isUserName($value){
		if (preg_match("/^[a-zA-Z][a-zA-Z0-9]+$/", $value))
		{
			return TRUE;
		}
		return FALSE;
	}

	/**
	 * 校验是否是手机号码
	 * @param string $str
	 * @return boolean
	 */
	public static function isMobile($str)
	{
		if (preg_match("/^1(3|5|8)[0-9]{9}$/i", $str))
			return true;
		return false;
	}

	/**
	 *
	 * 校验是否是电话号码
	 * @param string $str
	 * eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ...|xxxx-xxxxxxxx
	 */
	public static function isPhone($str)
	{
		if (preg_match("/^0[0-9]{2,3}-[0-9]{7,8}-([0-9]{0,6}?)$/", $str))
		return true;
		return false;
	}

	/**
	 *
	 * 校验是否是传真号码
	 * @param string $str
	 * eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ...|xxxx-xxxxxxxx
	 */
	public static function isFax($str)
	{
		if (preg_match("/^0[0-9]{2,3}-[0-9]{7,8}-([0-9]{0,6}?)$/", $str))
		return true;
		return false;
	}

	/**
	 * 校验是否是邮政编码
	 * @param string $str
	 * @return boolean
	 */
	public static function isPostcode($str)
	{
		if (preg_match("/^[0-9]{6}$/", $str))
		return true;
		return false;
	}

	/**
	 * 校验是否是电子邮箱
	 * @param string $str
	 * @return boolean
	 */
	public static function isEmail($str)
	{
		if (preg_match("/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/i", $str))
		return true;
		return false;
	}

	/**
	 * 校验是否都是中文
	 * @param string $str
	 * @return boolean
	 * 简要描述：姓名昵称合法性检查，中文姓名
	 */
	public static function isChinese($str)
	{
		if (preg_match("/^[\x80-\xff]+$/i", $str))
		{
			return true;
		}
		return false;
	}

	/**
	 * 校验是否都是英文
	 * @param string $str
	 * @return boolean
	 * 简要描述：姓名昵称合法性检查，中文姓名
	 */
	public static function isEnglish($str)
	{
		if (preg_match("/^[a-zA-Z]+$/", $str))
		{
			return true;
		}
		return false;
	}
	/**
	 * 校验是否有空格和英文组合
	 */
	public static function isEnglishAndSpace($str){
		if (preg_match("/^([a-zA-Z]+\s*)+$/", $str))
		{
			return true;
		}
		return false;
	}

	/**
	 * 密码合法性检查
	 * @param string $str
	 * @return boolean
	 * 简要描述：只能是6-16位的
	 */
	public static function isPassword($str)
	{
		if (preg_match("/^[0-9a-zA-Z]{6,16}$/", $str))
		return true;
		return false;
	}

	/**
	 * 检查是否含有中文
	 * @param string $str
	 * @return boolean
	 */
	public static function isContainChinese($str)
	{
		if (preg_match("/^.*[\x80-\xff]+.*$/", $str))
		{
			return true;
		}
		return false;
	}

	/**
	 * 检查是否是拼音，不包含中文
	 */
	public static function isPinYin($str){
		if (preg_match("/^.*[\x80-\xff]+.*$/", $str))
		{
			return false;
		}
		return true;
	}
	/**
	 * 检测字符串的长度，支持汉字[utf-8]，如果max 存在，检查是否在[min,max]范围，返回boolean
	 * 如果max不存在 返回字符串长度 int
	 * @param string $str
	 * @param int $min
	 * @param int $max
	 * @return int
	 * @author zougc
	 */
	public static function checkStringLen($str, $max = 0, $min = 0)
	{
		if (empty($str) || $min > $max)
		{
			return FALSE;
		}
		$str_len = 0;
		$length = strlen(preg_replace('/[\x00-\x7F]/', '', $str));
		if ($length)
		{
			$str_len = strlen($str) - $length + intval($length / 3);
		}
		else
		{
			$str_len = strlen($str);
		}
		if ($max)
		{
			if ($max >= $str_len && $str_len >= $min)
			return true;
			else
			return false;
		}
		else
		return $str_len;
	}

	/**
	 * 返回整数，如果失败返回0
	 * @param string $string
	 * @return int
	 * @author zougc
	 */
	public static function getIntNumber($string)
	{
		return is_numeric($string) ? intval($string) : 0;
	}

	/**
	 *
	 * 判断是否是空
	 * @param string $str
	 */
	public static function isNull($str)
	{
		if ($str == "")
		return true;
		return false;
	}

	/**
	 *
	 * 判断是否是IP地址
	 * @param string $val
	 */

	public static function isIp($val)
	{
		if (preg_match("/^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}$/", $val))
		return true;
		return false;
	}

	/**
	 * 判断是否是中文(只能中文)
	 *
	 * @param string $String
	 * @return boolean
	 * @author hush
	 */

	public static function isCn($String)
	{
		if (preg_match("/^[\x{4e00}-\x{9fa5}]+\S+$/u", $String))
		return TRUE;
		return FALSE;
	}



	/**
	 * 日期合法性检查
	 * @param string $str
	 * @return boolen
	 * @author wangjd 2010-12-02
	 */
	public static function isDate($str)
	{
		if (preg_match("/^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|(1|2|3)[0-9])$/", $str))
		return true;
		return false;
	}

	/**
	 * 合法的地址 英文
	 * @param string $str
	 * @return boolean
	 * @author zougc
	 */
	public static function isOkAddress($str)
	{
		if (preg_match("/^[a-zA-z0-9-\s+#]*$/", $str))
		return true;
		return false;
	}

	/**
	 * 支持英文和空格 省份 城市的验证
	 */
	public static function isOKEngString($str)
	{
		if (preg_match("/^[a-zA-z\s+]*$/", $str))
		return true;
		return false;
	}
	
	
}